package com.estacionamientos.mapper

import com.estacionamientos.PromocionCalendar
import com.estacionamientos.PromocionDia
import com.estacionamientos.dto.PromocionDTO

class PromocionMapper {
	
	static final long ONE_HOUR = 60 * 60 * 1000L;
	
	
	public static PromocionCalendar renderPromocionCalendar(PromocionDTO dto){
		PromocionCalendar  promocion= new PromocionCalendar();
		promocion.setDescripcion(dto.getDescripcion());
		promocion.setPrecioHora(dto.getPrecioHora());
		promocion.setTotalLugares(dto.getCantidadLugares());
		promocion.setHoraDesde(dto.getHoraDesde());
		promocion.setHoraHasta(dto.getHoraHasta());
		int days = daysBetween(dto.getDesde(),dto.getHasta());
		List<PromocionDia> promociones = new ArrayList<PromocionDia>(days);
		
		days.times {
			Calendar calendar = Calendar.getInstance()
			calendar.setTime(dto.getDesde())
			calendar.add(calendar.DATE,it)
			PromocionDia promociondia = renederPromocionDia(dto.getCantidadLugares(),calendar.getTime())
			promociones.add(promociondia);
		}
		
		
		
		promocion.setPromocionesDia(promociones)
		
		return promocion;
	}
	
	private  static int daysBetween(Date d1, Date d2){
		return ( (d2.getTime() - d1.getTime() + ONE_HOUR) /
					  (ONE_HOUR * 24)) + 1;
	}
	
	private static PromocionDia renederPromocionDia(Integer cantidad, Date dia){
		PromocionDia promocion = new PromocionDia();
		promocion.setCantidadLugares(cantidad);
		promocion.setDate(dia);
		return promocion
	}
	
}
